package es.aqua.aquac.il.helper;

import java.util.ArrayList;
import java.util.List;

import es.aqua.aquac.bl.interfaces.ReciboBS;
import es.aqua.aquac.exception.GeneralBusinessException;
import es.aqua.aquac.exception.GeneralPLException;
import es.aqua.aquac.il.domain.Factura;
import es.aqua.aquac.il.domain.Recibo;

public class ReciboHelper {
	/**
	 * Servicio.
	 */
	private ReciboBS reciboBS;

	/**
	 * @return the reciboBS
	 */
	public ReciboBS getReciboBS() {
		return reciboBS;
	}

	/**
	 * @param reciboBS
	 *            the reciboBS to set
	 */
	public void setReciboBS(ReciboBS reciboBS) {
		this.reciboBS = reciboBS;
	}

	/**
	 * Inserta Recibo.
	 * 
	 * @return Recibo
	 */
	public Recibo insertarRecibo(Recibo recibo) throws GeneralPLException {

		try {
			recibo = reciboBS.insert(recibo);

		} catch (GeneralBusinessException e) {
			throw new GeneralPLException(e);
		}
		return recibo;
	}

	/**
	 * Recupera los recibos de una factura.
	 * 
	 * @List<Recibo>
	 */
	public List<Recibo> obtenerRecibosFactura(Factura factura) throws GeneralPLException {

		List<Recibo> lstRecibos = new ArrayList<Recibo>();

		try {

			lstRecibos = reciboBS.findByProperty("factura.id", String.valueOf(factura.getId()));

		} catch (GeneralBusinessException e) {
			throw new GeneralPLException(e);
		}
		return lstRecibos;
	}

	public Recibo buscarReciboById(Integer idRecibo) throws GeneralPLException {

		Recibo recibo = new Recibo();

		try {

			recibo = reciboBS.findById(idRecibo);

		} catch (GeneralBusinessException e) {
			throw new GeneralPLException(e);
		}
		return recibo;
	}
}
